console.log(__dirname)
const nodefs = require('fs')
const { open, close, appendFile, rename } = require('node:fs')
// const fs = require('fs/promises')
const path = require('path')
const { writeFile } = require('node:fs/promises')
const { Buffer } = require('node:buffer')

console.log('111111', nodefs.readdirSync(path.join(__dirname, '..', 'src')))
console.log('\x1b[33m%s\x1b[0m', 'hi!')
// 文件描述符，读取文件
// async function example() {
//   let filehandle
//   try {
//     filehandle = await fs.open(path.join(__dirname, '..', 'src/main.ts'), 'r')
//     console.log(filehandle.fd)
//     console.log(await filehandle.readFile({ encoding: 'utf8' }))
//   } finally {
//     if (filehandle) await filehandle.close()
//   }
// }
// example()

// fs.stat(path.join(__dirname, '..', 'src/main.ts'), (err, stats) => {
//   console.log('stats', stats)
// })
// const data = new Uint8Array(Buffer.from('Hello Node.js'))
// const promise = writeFile(path.join(__dirname, 'message.txt'), data)
// appendFile(path.join(__dirname, 'message.txt'), 'data to append', (err) => {
//   if (err) throw err
//   console.log('The "data to append" was appended to file!')
// })

// rename(path.join(__dirname, 'message.txt'), path.join(__dirname, 'newMessage.txt'), (err) => {
//   if (err) throw err
//   console.log('Rename complete!')
// })
//  (async function () {
//     try {
//       const controller = new AbortController()
//       const { signal } = controller
//       const data = new Uint8Array(Buffer.from('Hello Node.js'))
//       const promise = writeFile('message.txt', data, { signal })

//       // 在 promise 达成之前中止请求。
//       controller.abort()

//       await promise
//     } catch (err) {
//       // 当请求中止时 - err 是 AbortError
//       console.error(err)
//     }
//   }
// )()

// open('myfile', 'wx', (err, fd) => {
//   if (err) {
//     if (err.code === 'EEXIST') {
//       console.error('myfile already exists');
//       return;
//     }

//     throw err;
//   }

//   try {
//     writeMyData(fd);
//   } finally {
//     close(fd, (err) => {
//       if (err) throw err;
//     });
//   }
// });
